package com.muc.handler;

import com.muc.service.CarService;
import com.muc.service.impl.CarServiceImpl;
import com.muc.view.AddCarView;
import com.muc.view.MainView;
import com.muc.view.UpdateCarView;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

//操作类
public class MainViewHandlerToService implements ActionListener {
   /* private MainView mainView;
    public MainViewHandlerToService(MainView mainView){
        this.mainView = mainView;
    }*/
    public static MainView mainView;
    //    public void caseByServiceInfo(String operation ,int[] carIdS)
    public void caseByServiceInfo(String operations) {
        String[] strings = operations.split("#");
        String operation = strings[0];//读取操作类型
        ArrayList<Integer> carIdS = new ArrayList<Integer>();//不确定要操作的carId数量
        if(mainView==null){
            System.out.println("nullnullnulll");
        }

        if (!"-1".equals(strings[1].trim())) {//就说明有需要操作的carId,get them
            for (int i = 1; i < strings.length; i++) {
                carIdS.add(Integer.valueOf(strings[i]));
            }
        }
        if ("增加".equals(operation)) {
            new AddCarView(mainView);
        } else if ("修改".equals(operation)) {
           /* int[] selectedCarIds = mainView.getSelectedCarIds();
            if(selectedCarIds.length!=1){
                JOptionPane.showMessageDialog(mainView,"一次只能修改一行");
            }else {*/
//                new UpdateCarView(mainView, selectedCarIds[0]);
//            }
            //new UpdateCarView(mainView,carIdS[0]);
            new UpdateCarView(mainView, carIdS.get(0));
        } else if ("删除".equals(operation)) {
            /*int[] selectedCarIds = mainView.getSelectedCarIds();
            if(selectedCarIds.length  == 0){
                JOptionPane.showMessageDialog(mainView,"请选择要删除的行!");
                return;
            }
            int option = JOptionPane.showConfirmDialog(mainView, "你确认要删除选择的" + selectedCarIds.length + "行吗?", "确认删除",
                    JOptionPane.YES_NO_OPTION);
            if(option == JOptionPane.YES_OPTION){//确认删除*/
            //转换一下数据类型，减少更改代码量
            int[] selectedCarIds = new int[carIdS.size()];
            int i = 0;
            for (Integer oneCarId : carIdS) {
                selectedCarIds[i] = oneCarId;
                i++;
            }
            System.out.println("輸出删除车辆id信息:"+selectedCarIds);;
            CarService carService = new CarServiceImpl();
            boolean deleteResult = carService.delete(selectedCarIds);
            if (deleteResult) {
                JOptionPane.showMessageDialog(mainView, "删除目标车辆成功!");
                mainView.reloadTable();
            } else {
                JOptionPane.showMessageDialog(mainView, "删除车辆信息失败!");
            }
            //}
        } else if ("查询".equals(operation)) {
            mainView.setPageNow(1);
            mainView.reloadTable();
        } else if ("上一页".equals(operation)) {
            mainView.setPageNow(mainView.getPageNow() - 1);

        } else if ("下一页".equals(operation)) {
            mainView.setPageNow(mainView.getPageNow() + 1);
        }
    }


    //这个方法已弃用
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton jButton = (JButton) e.getSource();
        String text = jButton.getText();
        if("增加".equals(text)){
            //传递增加信息
            mainView.setAdd(true);
//            new AddCarView(mainView);
        }else if("修改".equals(text)){
            int[] selectedCarIds = mainView.getSelectedCarIds();
            if(selectedCarIds.length!=1){
                JOptionPane.showMessageDialog(mainView,"一次只能修改一行");
            }else {
//                new UpdateCarView(mainView, selectedCarIds[0]);
                //传递修改信息 和下标
                mainView.setUpdate(true);

            }
        }else if("删除".equals(text)){
            int[] selectedCarIds = mainView.getSelectedCarIds();
            if(selectedCarIds.length  == 0){
                JOptionPane.showMessageDialog(mainView,"请选择要删除的行!");
                return;
            }
            int option = JOptionPane.showConfirmDialog(mainView, "你确认要删除选择的" + selectedCarIds.length + "行吗?", "确认删除",
                    JOptionPane.YES_NO_OPTION);
            if(option == JOptionPane.YES_OPTION){//确认
                mainView.setDel(true);//删除信息标志
                //从GUI传送删除信息 和 要删除的下标 --》 给我的客户端

                /*CarService carService = new CarServiceImpl();
                boolean deleteResult = carService.delete(selectedCarIds);
            if(deleteResult){
                    JOptionPane.showMessageDialog(mainView,"删除目标车辆成功!");
                    mainView.reloadTable();
                }else {
                    JOptionPane.showMessageDialog(mainView,"删除车辆信息失败!");
                }*/
            }
        }else if("查询".equals(text)){

            mainView.setSearch(true);
//            mainView.setPageNow(1);
//            mainView.reloadTable();
        }else if("上一页".equals(text)){
//            mainView.setPageNow(mainView.getPageNow()-1);
            mainView.setPrePage(true);
        }else if("下一页".equals(text)){
//            mainView.setPageNow(mainView.getPageNow()+1);
                mainView.setNextPage(true);
        }
    }


}
